package com.jerry.base.dynamicproxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * 明星代理
 *
 * @author Jerry
 * @since 2024/7/17 0:01
 */
public class StarHandler implements InvocationHandler {

    private Object target;

    public StarHandler(Object target) {
        this.target = target;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // 第一个参数：代理对象
        // 第二个参数：代理对象执行的方法
        // 第三个参数：代理对象执行方法的参数
        if (method.getName().equals("sing")) {
            System.out.println("清嗓子");
        } else if (method.getName().equals("dance")) {
            System.out.println("活动筋骨");
        }
        return method.invoke(target, args);
    }
}
